package com.yidian.server.goods;

import com.yidian.entity.PageResult;
import com.yidian.pojo.goods.Sku;
import com.yidian.pojo.order.OrderItem;

import java.util.List;
import java.util.Map;

/**
 * @author whb
 * @create 2021-05-25 10:28
 * @decription 库存量单位Service接口
 */
public interface SkuService {
    public List<Sku> findAll();

    public PageResult<Sku> findPage(int page, int size);

    public List<Sku> findList(Map<String, Object> searchMap);

    public PageResult<Sku> findPage(Map<String, Object> searchMap, int page, int size);

    public Sku findById(String id);

    public void add(Sku sku);

    public void update(Sku sku);

    public void delete(String id);

    /**
     * 保存所有的价格到redis
     */
    public void saveAllPriceToRedis();

    /**
     * 根据SkuId从Redis读取价格
     * @param skuId
     * @return
     */
    public Integer findPriceFromRedis(String skuId);

    /**
     * 价格保存到Redis缓存
     * @param skuId
     * @param price
     */
    public void savePriceToRedis(String skuId,Integer price);

    /**
     * 根据skuId删除Redis缓存中的价格
     * @param skuId
     */
    public void deletePriceFromRedis(String skuId);

    /**
     * 根据购物车批量扣减库存和增加销量
     * @param orderItemList 购物车列表
     * @return
     */
    public boolean deductionStock(List<OrderItem> orderItemList);
}
